//
// Strelka - Small Variant Caller
// Copyright (c) 2009-2018 Illumina, Inc.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
//

#pragma once

#include "common/Program.hh"

#include <cassert>

#include <string>


namespace MODEL_TYPE
{
enum index_t
{
    INDEL,
    SNV,
    SIZE,
    NONE = SIZE
};

inline
const char*
label(const index_t i)
{
    switch (i)
    {
    case INDEL:
        return "indel";
    case SNV:
        return "snv";
    default:
        assert(false && "unknown model type");
        return "xxx";
    }
}
}


struct EPACOptions
{
    std::string countsFilename;

    MODEL_TYPE::index_t modelType = MODEL_TYPE::NONE;
    int modelIndex = 1;
};


void
parseEPACOptions(
    const illumina::Program& prog,
    int argc,
    char** argv,
    EPACOptions& opt);
